﻿using System;
using System.Collections.Generic;

namespace Calimbra.Runtime.Contracts
{
    public interface IJoin<TInput1, TInput2, TOutput>
    {
        event Action<TOutput> Output;

        void Input1(TInput1 message);

        void Input2(TInput2 message);
    }


    public interface IJoin<TInput1, TInput2>
    {
        event Action<Tuple<TInput1, TInput2>> Output;

        void Input1(TInput1 message);

        void Input2(TInput2 message);
    }

    public interface IJoin<T> 
    {
        event Action<IEnumerable<T>> Output;

        void Input1(IEnumerable<T> message);

        void Input2(IEnumerable<T> message);
    }
}